package com.xxxy.yh;
import jdk.internal.dynalink.support.NameCodec;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Bean
    @Override
   protected UserDetailsService userDetailsService(){
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(
                User
                        .withUsername("zhangsan")
                        .password(PasswordEncoderFactories.
                                createDelegatingPasswordEncoder().encode("123"))
                        .authorities("USER")
                        .build()
        );
    return manager;

}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception{
    return super.authenticationManagerBean();
}
@Override
    protected void configure(AuthenticationManagerBuilder auth) throws
        Exception{
        auth.userDetailsService(userDetailsService());
}
}
